package com.cskaoyan.javase.oop2._1extends._7initialization._3super;

/**
 * super关键字和this关键字的使用,基本是一样的
 * 区别在于:
 *      this指向当前对象,super指向父类对象(当然这个父类对象是近似看做,不是真正的一个对象)
 *      所以从使用上来说,
 *      在子类的成员方法/构造器/构造代码块中都可以使用它们
 *      this表示子类自身成员
 *      super表示父类成员
 *      在特殊情况下,可以用super区分父子类中同名的成员.
 *
 * 当然如果硬要抠出区别,也还是有的:
 *      1.this终究是当前对象,用this访问自身成员,没有权限限制
 *          但是super指向父类对象,要受访问权限的限制
 *          父类中的私有成员,无法访问
 *
 *      2.this终究是一个引用,是一个指向当前对象的引用,引用中存储的是对象的地址
 *          但是super不是一个引用,指向的也不是对象,它没办法存储对象的地址
 *          所以this可以直接输出
 *          但是super不可以直接输出
 *
 * @since 17:18
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class Father {
    int a = 10;
}

class Son extends Father {
    int a = 100;

    public void test(int a) {
        // 局部变量的a
        System.out.println(a);
        // 自身成员变量a
        System.out.println(this.a);
        // 父类成员变量a
        System.out.println(super.a);

        System.out.println(this);
        // System.out.println(super);
    }
}
